/**********************************************
*  Classes:   CameraMover
*  Desc:      Derives from EventListener. When a
*             camera move event has been issued
*             the camera mover moves the camera :P
*  Author:    Vaios Kalpias-Ilias (C) 2008-2009
***********************************************/

#ifndef CAMERAMOVER_H
#define CAMERAMOVER_H

#include "EventListener.h"
#include "Camera.h"

class CdnRenderer;
class InputManager;
class EventManager;

class CameraMover : public EventListener
{
public:

	CameraMover();
	~CameraMover();

	bool Init();

	
private:

	CameraPtr m_spCamera;
	CdnRenderer* m_pRenderer;
	EventManager* m_pEventMgr;
	InputManager* m_pInputMgr;
	const float m_kfMoveSpeed;

	void SetInterested();
	void HandleEvent(const Event& e);

	void CreateMoveUpEvent();
	void CreateMoveDownEvent();
	void CreateMoveRightEvent();
	void CreateMoveLeftEvent();
	void CreateMoveForwardEvent();
	void CreateMoveBackEvent();

	void MoveCameraUp();
	void MoveCameraDown();
	void MoveCameraLeft();
	void MoveCameraRight();
	void MoveCameraForward();
	void MoveCameraBack();

};

#endif